package api

import (
	"Todolist/pkg/utils"
	"Todolist/service"
	"Todolist/types"
	"github.com/gin-gonic/gin"

	"net/http"
)

// 处理用户注册请求
func UserRegisterHandler() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		var req types.UserRegisterReq //用于存储从请求中解析出的用户注册请求的数据。
		if err := ctx.ShouldBind(&req); err == nil {
			//参数校验 ctx.ShouldBind(&req) 函数来尝试从 HTTP 请求中解析请求数据，并将结果存储在 req 变量中
			l := service.GetUserSrv()
			//函数来获取用户服务的实例
			resp, err := l.UserRegister(ctx.Request.Context(), &req)
			if err != nil {
				ctx.JSON(http.StatusInternalServerError, ErrorResponse(err))
				return
			}
			ctx.JSON(http.StatusOK, resp)
		} else {
			utils.LogrusObj.Infoln(err)
			ctx.JSON(http.StatusBadRequest, ErrorResponse(err))
		}
	}
}

func UserLoginHandler() gin.HandlerFunc {
	return func(ctx *gin.Context) {
		var req types.UserLoginReq //用于存储从请求中解析出的用户注册请求的数据。
		if err := ctx.ShouldBind(&req); err == nil {
			//参数校验 ctx.ShouldBind(&req) 函数来尝试从 HTTP 请求中解析请求数据，并将结果存储在 req 变量中
			l := service.GetUserSrv()
			//函数来获取用户服务的实例
			resp, err := l.UserLogin(ctx.Request.Context(), &req)
			if err != nil {
				ctx.JSON(http.StatusInternalServerError, ErrorResponse(err))
				return
			}
			ctx.JSON(http.StatusOK, resp)
		} else {
			utils.LogrusObj.Infoln(err)
			ctx.JSON(http.StatusBadRequest, ErrorResponse(err))
		}
	}
}
